"""
1.学习目标
    掌握appium操作微信公众号和微信小程序的自动化测试方法
2.操作步骤
    2.1 保证真机（模拟器）和电脑连接成功
            输入`adb connect 127.0.0.1:21503` 链接逍遥模拟器
            输入`adb devices` 能够获取设备名称。
            注意：当运行真机的时候,不能黑屏
    2.2 打开被测的徽信小程序
            获取小程序在徽信中的进程
            1.adb shell
            2.dumpsys activity top | grep ACTIVITY
            3.ps pid
            得到微信小程序进程 : com.tencent.mm:appbrand0
    2.3 在启动参数中添加微信小程序的进程
            "chromeOptions":{"androidprocess":"com.tencent.mm:appbrand0"}  #
            来启动对应小程序
    2.4 获取微信APP包名和APP启动名
            命令行终端执行
                adb shell dumpsys window windows | findstr mFocusedApp
            获得的包名和启动名为：com.tencent.mm/.ui.LauncherUI
    2.5 在启动参数中添加新参数
            "noReset":True  # 表示不重置应用
            避免测试小程序时需要重复登陆微信。
    2.6 操作小程序/公众号
        其余操作和普通APP一样的
3.需求
"""

# 1.导入appium和TouchAction
import time
from appium import webdriver

# 2.创建Desired capabilities对象，添加启动参数
from appium.webdriver.common.appiumby import AppiumBy

desired_caps = {
    "platformName": "Android",  # 系统名称
    "platformVersion": "10",  # 系统版本
    "deviceName": "J77DTSBMTC4L5LRW",  # 设备名称
    "appPackage": "com.tencent.mm",  # APP包名
    "appActivity": "com.tencent.mm.ui.LauncherUI",  # APP启动名
    "noReset": True,  # 表示不重置应用
    "chromeOptions": {"androidprocess": "com.tencent.mm:appbrand0"}
}

# 3.启动APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
time.sleep(10)
# 获取当前所有上下文
contexts = driver.contexts
print(contexts)  # 输出类似：['NATIVE_APP', 'WEBVIEW_com.tencent.mm']

# 切换到WebView上下文（如果需要）
# driver.switch_to.context('WEBVIEW_com.tencent.mm')
# 4.操作APP
# 点击发现 resource_id=com.tencent.mm:id/nvt
shouye_elementss=driver.find_elements(AppiumBy.ID,'com.tencent.mm:id/nvt')
shouye_elementss[2].click()

# driver.find_element_by_android_uiautomator('new UiSelector().text("发现")').click()
# 点击小程序
driver.find_element_by_android_uiautomator('new UiSelector().text("小程序")').click()
# 点击ofo小黄车官方版,进入小程序
driver.wait_activity("/.plugin.appbrand.ui.AppBrandLauncherUI", 10)
# time.sleep(3)
driver.find_element_by_android_uiautomator('new UiSelector().text("兴新向融")').click()
# driver.find_element_by_xpath("//*[@text='兴新向融']").click()

# 接下来就是操作微信小程序，和以前的操作一样。
# 都是一步一步定位，一步一步操作。

# 5.关闭APP
time.sleep(3)
driver.quit()